// Tags: Catalan
#include <cctype>
#include <cstdio>

typedef long long ll;

template <typename T>
inline T &read(T &x) {
  x = 0;
  bool f = false;
  short ch = getchar();
  while (!isdigit(ch)) {
    if (ch == '-') f = true;
    ch = getchar();
  }
  while (isdigit(ch)) x = (x << 1) + (x << 3) + (ch ^ '0'), ch = getchar();
  if (f) x = -x;
  return x;
}

const int N = 2e6 + 5, mod = 20100403;
int n, m, fac[N] = {1};

inline ll qpow(ll base, int index) {
  ll res = 1;
  while (index) {
    if (index & 1) res = res * base % mod;
    base = base * base % mod;
    index >>= 1;
  }
  return res;
}

inline ll C(int i, int j) {
  return (ll)fac[i] * qpow(fac[i - j], mod - 2) % mod * qpow(fac[j], mod - 2) %
         mod;
}
int main() {
#ifndef ONLINE_JUDGE
#ifdef LOCAL
  freopen64("/tmp/CodeTmp/testdata.in", "r", stdin);
  freopen64("/tmp/CodeTmp/testdata.out", "w", stdout);
#else
  freopen("P1641 [SCOI2010]生成字符串.in", "r", stdin);
  freopen("P1641 [SCOI2010]生成字符串.out", "w", stdout);
#endif
#endif

  read(n), read(m);
  for (int i = 1; i <= n + m; ++i) { fac[i] = (ll)fac[i - 1] * i % mod; }
  printf("%lld", (C(n + m, m) - C(n + m, m - 1) + mod) % mod);
  return 0;
}